package com.jy.wms.dao;

import com.jy.wms.common.base.BaseDao;
import com.jy.wms.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName: WmsBoxMapper.java
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @Author Jane
 * @Date Wed Oct 25 10:02:09 CST 2017
 */
public interface WmsBoxMapper extends BaseDao<WmsBox> {

    /**
     * 插入一条记录
     *
     * @param entity 实体对象
     * @return int
     */
    public Integer baseInsert(@Param("WmsBox") WmsBox entity);

    /**
     * 插入一条记录（匹配有值的字段）
     *
     * @param entity 实体对象
     * @return int
     */
    public Integer baseInsertSelective(@Param("WmsBox") WmsBox entity);

    /**
     * 删除（根据主键ID删除）
     *
     * @param ssfydid 所属发运订单Id
     * @return int
     */
    public Integer baseDeleteByPrimaryKey(@Param("ssfydid") String ssfydid);

    /**
     * 删除（根据ID 批量删除）
     *
     * @param idList 主键ID列表
     * @return int
     */
    public Integer baseDeleteBathPrimaryKeys(@Param("list") List<String> idList);


    /**
     * 分页查询
     *
     * @param entity 实体
     * @return List<WmsBox>
     */
    public List<WmsBox> baseSelectPage(@Param("WmsBox") WmsBox entity);

    /**
     * 查询（根据主键ID查询）
     *
     * @param id 主键ID
     * @return User
     */
    public WmsBox baseSelectByPrimaryKey(@Param("id") String id);

    /**
     * 查询（根据箱编号查询）
     *
     * @param xbh 箱编号
     * @return User
     */
    public List<String> baseSelectByPrimaryXbh(@Param("xbh") String xbh);

    /**
     * 查询（根据ID 批量查询）
     *
     * @param idList 主键ID列表
     * @return list
     */
    public Integer baseSelectBathPrimaryKeys(@Param("list") List<WmsBox> idList);

    /**
     * 修改 （匹配有值的字段）
     *
     * @param entity 主键ID列表
     * @return int
     */
    public Integer baseUpdateByPrimaryKeySelective(@Param("WmsBox") WmsBox entity);

    /**
     * 修改（根据主键ID修改）
     *
     * @param entity 主键ID列表
     * @return int
     */
    public Integer baseUpdateByPrimaryKey(@Param("WmsBox") WmsBox entity);

    /**
     * 查询发运单信息（根据发运单主键ID查询）_Jane
     *
     * @param id 发运单主键ID列表
     * @return int
     */
    public WmsShipmentOrder baseSelectBySokey(@Param("id") String id);

    /**
     * 查询未装箱的分配明细（根据发运单主键ID查询）_Jane
     *
     * @param id 发运单主键ID列表
     * @return int
     */
    public List<WmsDistribution> seachDistribution(@Param("id") String id);

    /**
     * 查询拆单明细（根据拆单主键ID查询）_Jane
     *
     * @param id 拆单主键主键ID列表
     * @return int
     */
    public WmsSplit seackSplit(@Param("id") String id);

    /**
     * 生成箱编号（根据箱编号查询是否存在查询）_Jane
     *
     * @param xbh 箱编号查询
     * @return int
     */
    public Integer selectCountXbh(@Param("xbh") String xbh);

    /**
     * 查找货品是否混放（根据货品Id）_Jane
     *
     * @param id 货品Id
     * @return int
     */
    public WmsGoodsType selectGoodsSfhf(@Param("id") String id);

    /**
     * 查找发运单下最大箱序号（根据发运单ID）_Jane
     *
     * @param ssfydid 所属发运单ID
     * @return int
     */
    public Integer seachMaxXxhBySsfydid(@Param("ssfydid") String ssfydid);

    /**
     * 查询散箱中未分配箱编号（根据发运单ID）_Jane
     *
     * @param ssfydid 所属发运单ID
     * @param xxh 箱序号
     * @return int
     */
    public WmsBox seachNoXbhBySsfydid(@Param("ssfydid") String ssfydid,@Param("xxh") Integer xxh);
    /**
     * 查询总重量总体积（根据发运单ID）_Jane
     * @param ssfydid 所属发运单ID
     * @return int
     */
    public List<WmsBox> seachZtjAndZzl(@Param("ssfydid") String ssfydid);
    /**
     * 查询周转箱信息（根据所属货主ID_Jane
     * @param sshzid 所属货主Id
     * @return int
     */
    public List<WmsTurnoverBox> seachTurnoverMx(@Param("sshzid") String sshzid,@Param("ckid") String ckid,@Param("c") String c,@Param("k") String k,@Param("g") String g);
    /**
     * 获取当前货主下最小周转箱_Jane
     * @param sshzid 所属货主Id
     * @return int
     */
    public WmsTurnoverBox seachZxtjBox(@Param("sshzid") String sshzid,@Param("ckid") String ckid);
    /**
     * 根据周转箱ID查询周转箱信息（根据周转箱ID_Jane
     * @param id 周转箱ID
     * @return int
     */
    public WmsTurnoverBox seachTurnoverXX(@Param("id") String id);
    /**
     * 查询货品的长宽高信息（根据货品id_Jane
     * @param hpid 货品ID
     * @return int
     */
    public WmsPackingDetailed seachGoodsMx(@Param("hpid") String hpid);
    /**
     * 根据发运单ID获取整箱最大箱序号_Jane
     * @param ssfydid 发运单ID
     * @return int
     */
    public Integer seachMaxXxh(@Param("ssfydid") String ssfydid);
    public List<WmsBox> seachSx(@Param("ssfydid") String ssfydid);
    //修改分配表中装箱状态
    public Integer updateDistribution(@Param("WmsDistribution") WmsDistribution wmsDistribution);
    /**
     * 查询最大箱序号的信息（根据发运单ID）_Jane
     * @param ssfydid 发运单ID
     * @return int
     */
    public List<WmsBox> seachBoxByMaxXxh(@Param("ssfydid") String ssfydid);
    /**
     * 查询最后一箱总重量总体积（根据发运单ID）_Jane
     * @param ssfydid 发运单ID
     * @return int
     */
    public WmsBox seachZhyxTj(@Param("ssfydid") String ssfydid);
    /**
     * 获取散箱的箱ID（根据发运单ID）_Jane
     * @param ssfydid 发运单ID
     * @return int
     */
    public List<WmsBox> selectByzzxid(@Param("ssfydid") String ssfydid);
    /**
     * 获取发运明细详细信息（根据发运单ID）_Jane
     * @param id 发运单明细ID
     * @return int
     */
    public List<WmsShipmentOrderDetailed> selectShipmentByMxid(@Param("ssfyddid") String id);
    /**
     * 获取发运明细装箱数量（根据发运单ID）_Jane
     * @param ssfymxid 发运单明细ID
     * @return int
     */
    public Integer selecBoxByFymxid(@Param("ssfymxid") String ssfymxid);
    /**
     * 发运订单捡货状态（根据发运单ID）_Jane
     * @param id 发运单明细ID
     * @return int
     */
    public String seachShipmentJhzt(@Param("id") String id);
    /**
     * 更新发运订单装箱状态（发运订单信息）_Jane
     * @param entity 发运单
     * @return int
     */
    public Integer updateShipmentOrder(@Param("WmsShipmentOrder") WmsShipmentOrder entity);
    /**
     * 查询装箱（发运单ID）_Jane
     * @param entity 发运单
     * @return int
     */
    public List<WmsBox> selectZxmxByFydid(@Param("WmsBox") WmsBox entity);
    /**
     * 查询装箱打印信息（发运单ID）_Jane
     * @param ssfydid 发运单ID
     * @return int
     */
    public List<WmsBox> selectDyxxByFydid(@Param("ssfydid") String ssfydid);
    /**
     * 查询装箱打印信息（发运单ID）_Jane
     * @param ssfydid 发运单ID
     * @param xbh 箱编号
     * @return int
     */
    public List<WmsBox> selectDyOneXxByFydid(@Param("ssfydid") String ssfydid,@Param("xbh") String xbh);
    /**
     * 最大箱序号（发运单ID）_Jane
     * @param ssfydid 发运单ID
     * @return int
     */
    public Integer boxMaxXh(@Param("ssfydid") String ssfydid);
    /**
     * 修改分配表装箱状态_Jane
     * @param entity 分配信息
     * @return int
     */
    public Integer updateWmsDistribution(@Param("WmsDistribution") WmsDistribution entity);
    /**
     * 修改箱编号_Jane
     * @param entity 分配信息
     * @return int
     */
    public Integer updateXbh(@Param("WmsBox") WmsBox entity);
    /**
     * 查询装箱详细信息用来分配箱_Jane
     * @param ssfydid 所属发运订单Id
     * @return int
     */
    public List<WmsBox> seachBoxMxByxxh(@Param("ssfydid")String ssfydid,@Param("xxh")Integer xxh);
    public WmsTurnoverBox zzxXx(@Param("zzxid") String zzxid);
    /**
     * 计算一个单据的整箱数_Jane
     * @param ssfydid 所属发运订单Id
     * @return int
     */
    public Integer zxXs(@Param("ssfydid")String ssfydid);
    /**
     * 计算一个单据的散箱数_Jane
     * @param ssfydid 所属发运订单Id
     * @return int
     */
    public Integer sxXs(@Param("ssfydid")String ssfydid);
    /**
     * 计算一个单据箱重量_Jane
     * @param ssfydid 所属发运订单Id
     * @return int
     */
    public Double xzl(@Param("ssfydid")String ssfydid,@Param("xxh")Integer xxh);
    /**
     * 查询一个拆单对应几个分配_Jane
     * @param sscdid 所属拆单Id
     * @return int
     */
    public List<WmsDistribution> seachDistributionByCdid(@Param("sscdid")String sscdid);
}


